Skip to content

docs(pm-dispatch): name what IS and is NOT build-tier evidence in the downgrade fuse - #17199

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-17139-tier-evidence-line
Sep 10, 2026
Merged

docs(pm-dispatch): name what IS and is NOT build-tier evidence in the downgrade fuse#17199
os-zhuang merged 1 commit into
mainfrom
claude/issue-17139-tier-evidence-line

Conversation

@os-justin

Copy link
Copy Markdown
Collaborator

Fixes #17139

One line added to .claude/skills/pm-dispatch/references/contract-review.md under 〈降档保险丝(机读)〉, naming what IS admissible evidence of the tier a build ran at and what is NOT. Docs-only, governed surface, no package touched.

Added (118 bytes measured, under the 120-byte per-line pin):

- 施工档只取 harness `model` 盖章或认领 Container & model 行;`Co-Authored-By` = 署名常量 ⛔ 非证据。

It carries both halves of the director seat's instruction: the two admissible sources (the harness model stamps; the claim's Container & model: line) and the exclusion (the Co-Authored-By trailer is a session-attribution constant, never evidence of tier). 施工档 is this corpus's own term for the tier work was built at (references/lanes/cli.md: 「只定复核档不定施工档」), the counterpart to 服役档 already used three lines above. The card's working spelling measured 145 bytes and did not fit, so the spelling was tightened; both halves survive intact and no model identifier appears in it.

Placed directly after 「转录档位核验:… harness 逐消息盖章的 model 字段。」 — that line names the harness stamp as a reading; the new line closes the set around it and names the artefact that is not in it.

Line budget — paid by deletion, not by re-wrap

The file sits at its ratchet ceiling: check-skill-line-ratchet reads it at 60 lines (ceiling 60; headroom 0) both before and after. The added line is paid by deleting one line inside the same file:

- 外部评审链是可选事后审计:分诊定时轮与总监席召唤 ⛔ 不是放行必要条件。

Why it was the redundant one:

  • Its rule is already stated in SKILL.md 〈入队与落地〉: 「外部评审链降为可选事后审计,非放行前提。」 The rules-only rewrite convention for this corpus is one rule per line, no rule already stated in SKILL.md — the ratchet's own ceiling comment states it, and this file's first line scopes itself to 载体纪律、归属资格与降档保险丝.
  • Its extra specificity — which chains — is stated in references/lanes/director.md, where those chains' duties live: :31 「裁决仍被尊重但非放行必要条件」 and :71 「契约复核的放行归派发席席内,定时轮与本席降为可选事后审计」.
  • check-skill-line-ratchet.mjs's own header had already classified this bullet as a restatement, rejected as payment then only because a byte trim (−24 B) could not move a LINE ratchet. After the rules-only rewrite the bullet is exactly one line, so deleting it banks the line the ratchet prices.
  • director.md:71 defers to this file (「../contract-review.md 为准」) for 契约复核的放行归属 — that deferral still resolves: 放行 = 清标即落地 and 落地前检三条 are untouched here.
  • It is not pinned by any gate: 外部评审链 / 事后审计 / 放行必要条件 appear in no gate assertion (only in a check-skill-line-ratchet.mjs narrative comment). A per-line scan of the file against every file under scripts/ and .claude/ shows the pinned lines are elsewhere — L16/L19/L20/L23 (check-half-states, check-clause2-carriers), L29/L44 (check-clause2-carriers) — and none of them is the deleted line or a line in the edited section.

No ceiling raise, no re-wrap, no edit to check-skill-line-ratchet.mjs, no SKILL.md edit.

维护者速读(草稿)

改了什么 — 内部 PM 技能里的一份参考文档加了一行:说清「这次活是在哪个档位上干的」这件事,证据只认两处(harness 逐消息盖的 model 戳、认领评论里的 Container & model 行),并点名一个不算证据的东西(commit 的 Co-Authored-By 署名行)。同一份文档里删掉一行重复内容付账,总行数不变。

为什么改 — 这份文档原本只写了「档位怎么读」,从没写「哪些东西不是档位证据」。commit 的署名行里带模型名,没读过 AGENTS.md 那条署名规则的人会把它当档位盖章;这个误读真的发生过一次,拦住了一个 PR 并导致撤回。规则缺口的代价是重复的返工,补一行就堵住。

风险与代价(含回滚) — 风险很低:纯文档、不发布、不进产品,任何包都没碰,不需要 changeset。代价是文档预算:文件已经顶到 60 行天花板,新增一行必须删一行,这里删的是 SKILL.md 已经写过、总监席车道文件也写过的那条「外部评审链是可选事后审计」。若判断删错,回滚就是 revert 这一个提交,单文件一行进一行出,没有连带。

席位意见

你要做的 — 读一遍新增那行和被删那行,确认这个交换你认可,然后合并这个 PR(受管面,走人工合并)。

Acceptance notes

Gates — all 14 families dispatch-gates.mjs derives for this change set, run locally, exit code captured before any pipe:

gate exit verdict line
check:pm-skill-ratchet 0 ✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/contract-review.md is 60 lines (ceiling 60; headroom 0).
check:nul-bytes 0 check-nul-bytes: OK (scanned 8079 text file(s) … no raw ASCII control bytes).
check:doc-authoring 0 ✓ doc authoring guard: 403 files clean — no bare metadata literals.
check:pm-skill-id-lint 0 ✓ check-skill-id-lint: 26 file(s) clean
check:skill-frame-sync 0 ✓ check-skill-frame-sync: 2 copies of the decision frame are structurally isomorphic across 2 files
check:pm-governed-merges 0 ✓ check-governed-merges --self-test: 274 assertions
check:agent-test-spelling 0 self-test + sweep green
check:doc-formula-expressions 0 green after the declared prerequisite build
check:driver-memory-census 0 check-driver-memory-census: OK
check:refd-timer-probe 0 OK check-refd-timer-probe: 6433 source file(s) swept
check:watch-hint-literal 0 ✓ check-watch-hint-literal: 67 declaration(s) across 4 rostered name(s)
check-closing-keyword-parity.mjs (+ --self-test) 0 check-closing-keyword-parity: OK (3 parsers agree on all 9 keywords …)
check-comment-mask-corpus.mjs 0 ✓ comment-mask corpus sweep: 6438 files, 0 disagree

Reconciliation: dispatch-gates.mjs --ran reads 14 derived, 14 run, 0 NOT-MEASURED, 0 UNRUN.

check:doc-formula-expressions first exited 3 — PREREQUISITE NOT MET (@objectstack/formula / @objectstack/lint not built), which is NOT MEASURED, not a finding. It was re-run green after turbo run build --filter=@objectstack/formula --filter=@objectstack/lint under the shared verify lock (VERDICT command-exit 0 · held the lock 289s).

Self-tests run where the gate carries one: check-half-states --self-test (2976 cases), check-widening-tells --self-test (150 cases), check-clause2-carriers --self-test (299 cases) — all exit 0. Repo-wide pnpm lint is CI's run, not owed here; the diff adds no source file.

Control-character self-scan beyond the gate, on the edited file: grep -naP over the C0 range plus DEL → no match.

PM mechanism assumptions, measured:

  • A holds. The 60-line ceiling and the 120-byte per-line pin are both check-skill-line-ratchet.mjs (MAX_LINE_BYTES = 120; ['.claude/skills/pm-dispatch/references/contract-review.md', 60]). Measured before and after; the verdict line is quoted above.
  • B holds, and it changes nothing here. check-half-states.mjs and check-clause2-carriers.mjs do pin strings inside this file — but in 载体纪律 (L16/L19/L20/L23) and 复核归属 (L29/L44), never the deleted line and never a line in 降档保险丝. check-widening-tells.mjs pins none of this file's lines. The edited section carries no gate-pinned string.
  • C is stale in the safe direction. 7337179d is no longer the tip: origin/main is c3756ff0, 4 commits ahead, none of which touches this file. Work is based on c3756ff0; the target section's line numbers were re-read from that tree rather than from the card.

Scope: nothing else changed. No changeset — .claude/** publishes nothing (no package files[] ships it), so skip-changeset is the honest label; no changeset gate demanded one in the run above.

Out-of-scope, noted and not filed: check-skill-line-ratchet.mjs's ceiling narrative still describes the 外部评审链 bullet as a rejected payment candidate. That text is a record of a past raise, not a live claim about the tree, and the ratchet reads line counts rather than that prose — history, not a defect. 承接者:无 — no PR or person has reason to open that comment block for this reason.


Generated by Claude Code

… fuse

`references/contract-review.md` 〈降档保险丝(机读)〉 said how a seat's own
served tier is READ, and that a self-description is not a reading — it never
said which artefacts are NOT tier evidence. A commit trailer carries a model
string, so a reader who has not seen the AGENTS.md model-free trailer rule
takes it for a tier stamp. That misread once held a PR and cost a withdrawal.

Adds one line under that section carrying both halves: the two admissible
sources for the tier the work was BUILT at (the harness `model` stamps; the
claim's `Container & model:` line) and the exclusion (the `Co-Authored-By`
trailer is a session-attribution constant, never evidence of tier).

The file sits at its ratchet ceiling (60/60, headroom 0), so the added line is
paid by a deletion inside the file — never a re-wrap and never a ceiling raise.
The deleted line is the 外部评审链 bullet in 复核归属与资格, whose rule is
already stated in `SKILL.md` (「外部评审链降为可选事后审计,非放行前提。」) and
whose two named chains are stated in `references/lanes/director.md`, where the
duties of those chains live. The rules-only rewrite convention for this corpus
is one rule per line and no rule already stated in SKILL.md, so the bullet was
a restatement — the ratchet's own header had already classified it as one.

Claude-Session: https://claude.ai/code/session_01MoTv7pn338AZ71owsp19gQ
Co-authored-by: Claude <noreply@anthropic.com>
@os-justin os-justin added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 9, 2026 — with Claude
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 9, 2026

Copy link
Copy Markdown
Collaborator Author

维护者速读

改了什么 — 内部 PM 技能的一份参考文档(contract-review.md)加了一行、删了一行,总行数不变。新增那行说清「这次活是在哪个档位上干的」只认两种证据:harness 逐消息盖的 model 戳,和认领评论里的 Container & model 行;并点名 commit 的 Co-Authored-By 署名行不算档位证据。删掉的那行是「外部评审链只是可选的事后审计」,这条规则 SKILL.md 与总监席车道文件里都已写着。

为什么改 — 这份文档原本只写「档位怎么读」,没写「什么不是档位证据」。commit 署名行里带模型名,没读过署名规则的人会把它当档位盖章;这个误读在 PR #16862 上真发生过,拦下了一个已达档的 PR,总监席事后撤回。补一行堵住这个缺口,是总监席自己留的指令(#16836 上,5585423511),上一次折叠 PR 有意没带,所以单独立卡 #17139

风险与代价(含回滚) — 纯文档、不发布、不进产品、任何包都没碰,不需要 changeset。文件已顶到 60 行天花板,新增一行必须删一行;删的是已在别处成文的重复行,三个门禁自测在此分支上全绿,说明没有任何门禁钉着被删的那行。若不认可这个交换,回滚就是 revert 这一个提交。

席位意见 — 本席复核通过:新增行两个半句都在、120 字节踩线不超、被删行确是重复;CI 25 项全绿;合并无冲突。建议合并。

你要做的 — 受管面走人工合并:读一遍新增那行与被删那行,认可即批准并合并这个 PR。是否合并?


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review September 10, 2026 01:03
@os-zhuang
os-zhuang enabled auto-merge September 10, 2026 01:03
@os-zhuang
os-zhuang added this pull request to the merge queue Sep 10, 2026
Merged via the queue into main with commit 0264364 Sep 10, 2026
35 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-17139-tier-evidence-line branch September 10, 2026 01:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants